package com.xxc.batis.service

import com.xxc.batis.qo.PageQO
import com.xxc.batis.vo.PageVO

interface SelectService<E, PK> {

    /**
     * 根据主键查询
     * @param pk 主键
     * @return 查询结果,无结果时返回{@code null}
     */
    fun selectByPk(pk: PK): E?

    /**
     * 根据多个主键查询
     * @param pks 主键集合
     * @return 查询结果,如果无结果返回空集合
     */
    fun selectByPks(pks: Iterable<PK>): List<E>

    /**
     * 查询所有结果
     * @return 所有结果,如果无结果则返回空集合
     */
    fun selectAll(): List<E>

    /**
     * 查询所有结果
     * @return 获取分页结果
     */
    fun selectPage(pageQO: PageQO<*>): PageVO<E>

}